package com.Vclub.web;

import java.util.List;
import java.util.ResourceBundle;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.hibernate.Session;

import com.Vclub.negocio.Usuario;
import com.Vclub.servicio.UsuarioServicio;
import com.Vclub.servicio.impl.UsuarioServicioImpl;
import com.Vclub.util.VideoClubException;
import com.Vclub.util.HibernateUtil;

public class UsuarioBean extends MyBackbean {

	private Integer numSocio;

	private Long cedula;

	private String login;

	private String pwd;

	private String nombre;

	private String apellido;

	private Integer edad;

	private String direccion;

	private String mail;

	private String telefono;

	private String fechaIngreso;

	private Usuario usuarioSeleccionado;

	public Usuario getUsuarioSeleccionado() {
		return usuarioSeleccionado;
	}

	public void setUsuarioSeleccionado(Usuario usuarioSeleccionado) {
		this.usuarioSeleccionado = usuarioSeleccionado;
	}

	private UsuarioServicio usuarioServicio;

	private List<Usuario> usuarios;

	private static final String SUCCESS = "success";

	private static final String ERROR = "fail";

	private static ResourceBundle bundle = ResourceBundle
			.getBundle("com.Vclub.mensajes.MsgError");

	public UsuarioBean() {
		// usuarioServicio = new UsuarioServicioImpl();

	}

	private String selectUser;

	public Integer getNumSocio() {
		return numSocio;
	}

	public void setNumSocio(Integer numSocio) {
		this.numSocio = numSocio;
	}

	public Long getCedula() {
		return cedula;
	}

	public void setCedula(Long cedula) {
		this.cedula = cedula;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public Integer getEdad() {
		return edad;
	}

	public void setEdad(Integer edad) {
		this.edad = edad;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getSelectUser() {
		return selectUser;
	}

	public void setSelectUser(String selectUser) {
		this.selectUser = selectUser;
	}

	/**
	 * @param usuarioServicio
	 *            the usuarioServicio to set
	 */
	public void setUsuarioServicio(UsuarioServicio usuarioServicio) {
		this.usuarioServicio = usuarioServicio;
	}

	/**
	 * @return the mail
	 */
	public String getMail() {
		return mail;
	}

	/**
	 * @param mail
	 *            the mail to set
	 */
	public void setMail(String mail) {
		this.mail = mail;
	}

	/**
	 * @return the telefono
	 */
	public String getTelefono() {
		return telefono;
	}

	/**
	 * @return the fechaIngreso
	 */
	public String getFechaIngreso() {
		return fechaIngreso;
	}

	/**
	 * @param telefono
	 *            the telefono to set
	 */
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	/**
	 * @param fechaIngreso
	 *            the fechaIngreso to set
	 */
	public void setFechaIngreso(String fechaIngreso) {
		this.fechaIngreso = fechaIngreso;
	}

	/**
	 * Metodo que redirecciona a la pagina de Alta de Usuario
	 * 
	 * @return
	 */
	public String irAlta() {
		// limpiarUsuario();
		return "irAlta";
	}

	// verUsuarios
	public String verUsuarios() {
		// limpiarUsuario();
		return "verUsuarios";
	}

	/**
	 * Retorna a la pantalla principal
	 * 
	 * @return
	 */
	public String toMain() {
		return "toMain";
	}

	public String agregar() {
		// Session session = HibernateUtil.getSession();
		// session.close();

		Usuario usuario = new Usuario(numSocio, cedula, login, pwd, nombre,
				apellido, edad, direccion, telefono, mail, fechaIngreso);
		try {
			usuarioServicio.agregarUsuario(usuario);
		} catch (VideoClubException e) {
			// // TODO Auto-generated catch block
			e.printStackTrace();
		}

		limpiarCampos();

		return "";
	}

	public void limpiarCampos() {
		nombre = "";
		// cedula = 0;
		login = "";
		// anio = 0;
	}

	public String listaSocios() {

		this.usuarios = usuarioServicio.listaUsuario();

		return "";
	}

	/**
	 * @return the alumnos
	 */
	public List<Usuario> getUsuarios() {
		return usuarios;
	}

	/**
	 * @param alumnos
	 *            the alumnos to set
	 */
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}

	/**
	 * Metodo que realiza el logueo en la aplicacion
	 * 
	 * @return
	 */
	public String loginUsuario() {

		// Obtengo el servicio

		boolean existUser = usuarioServicio.usuarioExiste(this.getLogin(), this
				.getPwd());

		if (existUser) {
			// Almaceno el userName del usuario logueado
			HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);
			session.setAttribute("logUser", this.getLogin());
			// Elimino la info. del usuario logueado
			// this.limpiarUsuario();
			// Voy a la pagina principal
			return SUCCESS;
		} else {
			// Muestro un error, en la pantalla de Login
			// Agrego un mensaje a mostrar
			FacesContext.getCurrentInstance().addMessage("loginForm",
					new FacesMessage(bundle.getString("USER_INVALID")));
			return ERROR;
		}
	}

	public String imprimir() {
		if (this.usuarioSeleccionado != null) {
			// System.out.println(this.alumnoSeleccionado.getNombre());
			// this.anio = this.alumnoSeleccionado.getAnio();
		}

		return "";
	}
}
